package tut.fileLock.exclusive;

import java.io.FileOutputStream;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;

public class ExclusiveTest2 {
	public static void main(String[] args) {

		// リスト 3 lockメソッドの使用例 (排他ロック)
		System.out.println("dec dec");
		String filename = "/var/adptg/tets.txt";

		FileLock lock = null;
		FileChannel channel = null;
		try {
			channel = new FileOutputStream(filename).getChannel();

			// ロックをかける。書き込むバイト数が未知なので、sizeは多めにする
			// FileLock lock = channel.lock(); でも OK
			//lock = channel.lock(0, Long.MAX_VALUE, true); // why error ??
			lock = channel.lock(0, channel.size(), true);

			if(lock!= null) {
				System.out.println("lock test 2 locked");
			} else {
				System.out.println("lock test 2 null");
			}

			// 出力処理

		} catch (Exception e) {
			System.out.println(e.getCause());
			e.printStackTrace();
			System.out.println("dec");
		} finally {
		}
		try {
			channel.close();
			lock.release(); // ロックの解放
		} catch (Exception e2) {
			System.out.println("dec 2");
		}
	}
}
